JavaScript FormData 객체를 중첩 객체로 변환하기 - 기초
작성일 : 2025.03.10
웹 개발을 하다 보면 HTML 폼 데이터를 JavaScript 객체로 변환해야 하는 경우가 자주 있습니다. 특히 복잡한 폼에서는 중첩된 객체 구조가 필요한 경우도 많습니다. 오늘은 FormData 객체를 어떻게 중첩 구조의 JavaScript 객체로 변환하는지 살펴보겠습니다.
기본 코드 분석
아래 코드는 FormData 객체를 JavaScript 객체로 변환하는 함수입니다:
formDataToOption(formData: FormData): Record<string, any> {
const object: Record<string, any> = {};
let entries = formData.entries();
for (const pair of entries) {
if (pair[1] === 'on') {
const checkbox = this.setting.contentEl.querySelector(`[name="${pair[0]}"]`) as HTMLInputElement;
if (checkbox && checkbox.type === 'checkbox') {
pair[1] = checkbox.checked ? "true" : "false";
}
}
if (pair[0].includes('.')) {
const parts = pair[0].split('.');
let current = object;
for (let i = 0; i < parts.length - 1; i++) {
const part = parts[i];
if (!current[part]) {
current[part] = {};
}
current = current[part];
}
current[parts[parts.length - 1]] = pair[1];
} else {
object[pair[0]] = pair[1];
}
}
return object;
}
이 함수는 크게 세 가지 주요 기능을 수행합니다:
- FormData의 각 항목을 순회합니다.
- 체크박스 요소를 특별히 처리합니다.
- 점(.)을 포함하는 키를 중첩 객체 구조로 변환합니다.